home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 401-425 / disk_411 / tron / tron_sourcecode.lst < prev    next >
File List  |  1992-05-06  |  6KB  |  274 lines

  1. ' Dieser Sourcecode enthält nur das Wichtigste, nämlich die eigentliche Spiel-
  2. ' routine. Vorspann, Menü usw. sind nicht enthalten.
  3. ' Benutzen Sie "MERGE", um den Sourcecode in ihren GFABasicinterpreter zu laden.
  4. ' Sie dürfen diesen Sourcecode nach Belieben verändern, übernehmen und weiter-
  5. ' geben !
  6. '
  7. ' This sourcecode contains only the main part of the game TRON. The menu and
  8. ' other details are not included.
  9. ' Use "MERGE" to load the sourcecode into the GFABasicinterpreter.
  10. ' This sourcecode is public domain. You can do with it what you want.
  11. '
  12. OPENS 2,0,0,320,256,3,0
  13. OPENW #2,0,0,320,255,0,0
  14. ~ActivateWindow(WINDOW(2))
  15. SETCOLOR 0,0
  16. SETCOLOR 1,9,9,9
  17. SETCOLOR 2,13,9,2
  18. SETCOLOR 3,0,15,0
  19. SETCOLOR 4,3,6,15
  20. SETCOLOR 5,15,0,0
  21. SETCOLOR 6,15,0,0
  22. SETCOLOR 7,15,0,0
  23. '
  24. DIM x&(2),y&(3),alt&(2),speed&(2)
  25. DIM ttx&(2),tty&(2),a&(1000),b&(1000),c&(1000)
  26. '
  27. vorsprung&=700
  28. programme&=1
  29. user&=2
  30. bremse&=0
  31. tracktracing!=TRUE
  32. '
  33. speed&(0)=1
  34. x&(0)=69
  35. y&(0)=128
  36. alt&(0)=8
  37. speed&(2)=1
  38. x&(2)=70
  39. y&(2)=136
  40. alt&(2)=8
  41. speed&(1)=1
  42. x&(1)=71
  43. y&(1)=144
  44. alt&(1)=8
  45. ARRAYFILL a&(),0
  46. ARRAYFILL b&(),0
  47. ARRAYFILL c&(),0
  48. '
  49. count&=user&+programme&
  50. FOR i&=0 TO 2
  51.   ttx&(i&)=x&(i&)
  52.   tty&(i&)=y&(i&)
  53.   IF i&<=count&-1
  54.     COLOR 1
  55.     TEXT i&*50+50-12,10,STR$(i&+1)
  56.   ELSE
  57.     speed&(i&)=0
  58.     alt&(i&)=0  !sonst läuft tracktracing mit -> Geisterspuren !
  59.   ENDIF
  60. NEXT i&
  61. BOX 0,11,319,254 ! Spielfeldrand
  62. ' ----Spiel :--------------------------------------------------------------
  63. REPEAT
  64.   IF INT(RND*2)=0
  65.     zufall&=-1
  66.   ELSE
  67.     zufall&=1
  68.   ENDIF
  69.   FOR i&=0 TO 2
  70.     IF speed&(i&)>0
  71.       COLOR i&+2
  72.       IF user&=1 AND i&=0
  73.         port|=1
  74.       ELSE IF user&=2 AND i&=0
  75.         port|=1
  76.       ELSE IF user&=2 AND i&=1
  77.         port|=0
  78.       ELSE
  79.         GOTO programm
  80.       ENDIF
  81.       fire&=0
  82.       userabfrage:
  83.       SELECT STICK(port|)
  84.       CASE 1
  85.         IF alt&(i&)=2
  86.           GOTO Übersprung
  87.         ENDIF
  88.         DEC y&(i&)
  89.         alt&(i&)=1
  90.       CASE 2
  91.         IF alt&(i&)=1
  92.           GOTO Übersprung
  93.         ENDIF
  94.         INC y&(i&)
  95.         alt&(i&)=2
  96.       CASE 4
  97.         IF alt&(i&)=8
  98.           GOTO Übersprung
  99.         ENDIF
  100.         DEC x&(i&)
  101.         alt&(i&)=4
  102.       CASE 8
  103.         IF alt&(i&)=4
  104.           GOTO Übersprung
  105.         ENDIF
  106.         INC x&(i&)
  107.         alt&(i&)=8
  108.       CASE 0,5,6,9,10
  109.         Übersprung:
  110.         SELECT alt&(i&)
  111.         CASE 1
  112.           DEC y&(i&)
  113.         CASE 2
  114.           INC y&(i&)
  115.         CASE 4
  116.           DEC x&(i&)
  117.         CASE 8
  118.           INC x&(i&)
  119.         ENDSELECT
  120.       ENDSELECT
  121.       IF POINT(x&(i&),y&(i&))=0
  122.         PLOT x&(i&),y&(i&)
  123.       ELSE
  124.         @tot
  125.         @tracktracing
  126.         GOTO schleifenende
  127.       ENDIF
  128.       @tracktracing
  129.       IF STRIG(port|) AND fire&=0 AND speed&(i&)>0
  130.         INC fire&
  131.         COLOR i&+2
  132.         GOTO userabfrage
  133.       ENDIF
  134.       GOTO schleifenende
  135.       programm:
  136.       SELECT alt&(i&)
  137.       CASE 1 !----------------------------------------------------
  138.         IF POINT(x&(i&),y&(i&)-1)=0
  139.           DEC y&(i&)
  140.         ELSE
  141.           GOTO zwei
  142.         ENDIF
  143.       CASE 2 !-------------------------------------------------
  144.         IF POINT(x&(i&),y&(i&)+1)=0
  145.           INC y&(i&)
  146.         ELSE
  147.           zwei:
  148.           IF POINT(x&(i&)-zufall&,y&(i&))=0
  149.             x&(i&)=x&(i&)-zufall&
  150.             alt&(i&)=6-2*zufall&
  151.           ELSE
  152.             IF POINT(x&(i&)+zufall&,y&(i&))=0
  153.               x&(i&)=x&(i&)+zufall&
  154.               alt&(i&)=6+2*zufall&
  155.             ELSE
  156.               @tot
  157.             ENDIF
  158.           ENDIF
  159.         ENDIF
  160.       CASE 4 !----------------------------------------------------
  161.         IF POINT(x&(i&)-1,y&(i&))=0
  162.           DEC x&(i&)
  163.         ELSE
  164.           GOTO acht
  165.         ENDIF
  166.       CASE 8 !----------------------------------------------------
  167.         IF POINT(x&(i&)+1,y&(i&))=0
  168.           INC x&(i&)
  169.         ELSE
  170.           acht:
  171.           IF POINT(x&(i&),y&(i&)+zufall&)=0
  172.             y&(i&)=y&(i&)+zufall&
  173.             alt&(i&)=(15+5*zufall&)/10
  174.           ELSE
  175.             IF POINT(x&(i&),y&(i&)-zufall&)=0
  176.               y&(i&)=y&(i&)-zufall&
  177.               alt&(i&)=(15-5*zufall&)/10
  178.             ELSE
  179.               @tot
  180.             ENDIF
  181.           ENDIF
  182.         ENDIF
  183.       ENDSELECT
  184.       PLOT x&(i&),y&(i&)
  185.       @tracktracing
  186.     ELSE
  187.       @tracktracing
  188.     ENDIF
  189.     FOR brake&=1 TO bremse&
  190.     NEXT brake&
  191.     schleifenende:
  192.   NEXT i&
  193. UNTIL count&=0 OR INKEY$<>""
  194. '
  195. CLOSEW #2
  196. CLOSES 2
  197. END
  198. ' ------------------------Prozeduren :-----------------------------------
  199. PROCEDURE tot
  200.   DEC count&
  201.   speed&(i&)=0
  202.   alt&(i&)=0
  203. RETURN
  204. PROCEDURE tracktracing
  205.   IF tracktracing!=FALSE
  206.     GOTO tt_ende
  207.   ENDIF
  208.   IF i&=0
  209.     IF a&(0)=0
  210.     ELSE IF a&(0)=1
  211.       DEC tty&(i&)
  212.       COLOR 0
  213.       PLOT ttx&(i&),tty&(i&)
  214.     ELSE IF a&(0)=2
  215.       INC tty&(i&)
  216.       COLOR 0
  217.       PLOT ttx&(i&),tty&(i&)
  218.     ELSE IF a&(0)=4
  219.       DEC ttx&(i&)
  220.       COLOR 0
  221.       PLOT ttx&(i&),tty&(i&)
  222.     ELSE IF a&(0)=8
  223.       INC ttx&(i&)
  224.       COLOR 0
  225.       PLOT ttx&(i&),tty&(i&)
  226.     ENDIF
  227.     DELETE a&(0)
  228.     a&(vorsprung&)=alt&(i&)
  229.   ELSE IF i&=1
  230.     IF b&(0)=0
  231.     ELSE IF b&(0)=1
  232.       DEC tty&(i&)
  233.       COLOR 0
  234.       PLOT ttx&(i&),tty&(i&)
  235.     ELSE IF b&(0)=2
  236.       INC tty&(i&)
  237.       COLOR 0
  238.       PLOT ttx&(i&),tty&(i&)
  239.     ELSE IF b&(0)=4
  240.       DEC ttx&(i&)
  241.       COLOR 0
  242.       PLOT ttx&(i&),tty&(i&)
  243.     ELSE IF b&(0)=8
  244.       INC ttx&(i&)
  245.       COLOR 0
  246.       PLOT ttx&(i&),tty&(i&)
  247.     ENDIF
  248.     DELETE b&(0)
  249.     b&(vorsprung&)=alt&(i&)
  250.   ELSE IF i&=2
  251.     IF c&(0)=0
  252.     ELSE IF c&(0)=1
  253.       DEC tty&(i&)
  254.       COLOR 0
  255.       PLOT ttx&(i&),tty&(i&)
  256.     ELSE IF c&(0)=2
  257.       INC tty&(i&)
  258.       COLOR 0
  259.       PLOT ttx&(i&),tty&(i&)
  260.     ELSE IF c&(0)=4
  261.       DEC ttx&(i&)
  262.       COLOR 0
  263.       PLOT ttx&(i&),tty&(i&)
  264.     ELSE IF c&(0)=8
  265.       INC ttx&(i&)
  266.       COLOR 0
  267.       PLOT ttx&(i&),tty&(i&)
  268.     ENDIF
  269.     DELETE c&(0)
  270.     c&(vorsprung&)=alt&(i&)
  271.   ENDIF
  272.   tt_ende:
  273. RETURN
  274.